延續昨天奇怪的故事,忍者龜和兔子因為賽跑沒辦法分出勝負,所以決定要來PK圈圈叉叉啦
(這句是廢話,不是題目請忽略)
大家應該都會玩井字遊戲(俗稱圈圈叉叉)吧,想我國中都沒在上課,在那研究怎樣玩能必勝,但好像沒找出結果QQ
九宮格每格有自己座標 如圖
那你能得到圈圈叉叉的順序,其中由忍者龜先畫
廉明公正的你,要判斷誰贏誰輸,為烏龜與兔子結束長達以久的跑步比賽!
如果平手則回傳Draw,如果目前的步數無法判斷輸贏平手,則回傳Pending
建一個棋盤,然後用2個值分別代表兔子與烏龜,填完所有後,在逐行、逐列、對角線判斷。
class Solution {
public:
string tictactoe(vector<vector<int>>& moves) {
vector<vector<string>> grids(3,vector<string>(3,"0"));
//player A and B
for(int i = 0;i < moves.size(); i++) {
//first move: A
if(i % 2 == 0){
grids[moves[i][0]][moves[i][1]] = "A";
}
else{
grids[moves[i][0]][moves[i][1]] = "B";
}
}
//row and colum
for(int i=0;i<3;i++){
if(grids[i][0]!="0" && grids[i][0]==grids[i][1] && grids[i][1]==grids[i][2]) {
return grids[i][0];
}
if(grids[0][i]!="0" && grids[0][i]==grids[1][i] && grids[1][i]==grids[2][i]) {
return grids[0][i];
}
}
//diagonal
if(grids[0][0]!="0" && grids[0][0]==grids[1][1] && grids[1][1]==grids[2][2]){
return grids[0][0];
}
if(grids[0][2]!="0" && grids[0][2]==grids[1][1] && grids[1][1]==grids[2][0]){
return grids[0][2];
}
return (moves.size()==9)?"Draw":"Pending";
}
};